#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include <chrono>
#include <unistd.h>

using namespace std;

int main() {
  vector<string> fl_1;
  ifstream fin_1(R"(m1_sorted.txt)");
  string str_1;
    if(fin_1.is_open()) {
      while(fin_1 >> str_1)
        fl_1.push_back(str_1);
      fin_1.close();

  auto start = chrono::steady_clock::now();//начальное вермя
  for (int i = 0; i < 10; i++) {
    bool flag = true;
    for (int j = 0; j < 10 - (i + 1); j++) {
      if (fl_1[j] > fl_1[j + 1]) {
        flag = false;
        swap (fl_1[j], fl_1[j + 1]);
      }
  }
    if (flag) {
      break;
    }
      }
  auto end = chrono::steady_clock::now();//конечное время
  cout << "m1_sorted: "
  << chrono::duration_cast<chrono::nanoseconds>(end - start).count()
  << " ns" << endl;
  }
  //----------------
  vector<string> fl_2;
  ifstream fin_2(R"(m2_reverse.txt)");
  string str_2;
    if(fin_2.is_open()) {
      while(fin_2 >> str_2)
        fl_2.push_back(str_2);
      fin_2.close();

  auto start = chrono::steady_clock::now();//начальное вермя
  for (int i = 0; i < 10; i++) {
    bool flag = true;
    for (int j = 0; j < 10 - (i + 1); j++) {
      if (fl_2[j] > fl_2[j + 1]) {
        flag = false;
        swap (fl_2[j], fl_2[j + 1]);
      }
  }
    if (flag) {
      break;
    }
      }
  auto end = chrono::steady_clock::now();//конечное время
  cout << "m2_reverse: "
  << chrono::duration_cast<chrono::nanoseconds>(end - start).count()
  << " ns" << endl;
  }
  //--------------------
  vector<string> fl_3;
  ifstream fin_3(R"(m3_shuffle.txt)");
  string str_3;
    if(fin_3.is_open()) {
      while(fin_3 >> str_3)
        fl_3.push_back(str_3);
      fin_3.close();

  auto start = chrono::steady_clock::now();//начальное вермя
  for (int i = 0; i < 10; i++) {
    bool flag = true;
    for (int j = 0; j < 10 - (i + 1); j++) {
      if (fl_3[j] > fl_3[j + 1]) {
        flag = false;
        swap (fl_3[j], fl_3[j + 1]);
      }
  }
    if (flag) {
      break;
    }
      }
  auto end = chrono::steady_clock::now();//конечное время
  cout << "m3_shuffle: "
  << chrono::duration_cast<chrono::nanoseconds>(end - start).count()
  << " ns" << endl;
  }
}